package com.clear.honghefinance.biz.modules.system.member.service;

import com.clear.honghefinance.biz.modules.system.member.domain.dto.GetBase64CodeDTO;
import com.clear.honghefinance.biz.modules.system.member.domain.dto.GetSmsCodeDTO;
import com.clear.honghefinance.biz.modules.system.member.domain.dto.PhonePasswordLoginDTO;
import com.clear.honghefinance.biz.modules.system.member.domain.dto.PhoneSmsCodeLoginDTO;
import com.clear.honghefinance.common.dto.vo.TokenResponse;

/**
 *
 */

public interface MemberLoginService {

    /**
     * 获取客户端id
     *
     * @return 返回客户端id(随机生成的uuid)
     */
    String getClientId();

    /**
     * 获取图形验证码
     *
     * @param getBase64CodeDTO req
     * @return base64图形验证码
     */
    String getBase64Code(GetBase64CodeDTO getBase64CodeDTO);

    /**
     * 获取短信验证码
     *
     * @param dto req
     */
    void sendSmsCode(GetSmsCodeDTO dto);

    /**
     * 校验短信验证码
     *
     * @param phone       phone
     * @param smsCode     短信验证码
     * @param smsCodeType 验证码类型
     * @return 成功true、失败false
     */
    boolean checkSmsCode(String phone, String smsCode, String smsCodeType);

    /**
     * 校验图形验证码
     *
     * @param clientId clientId
     * @param code     code
     * @return 成功true、失败false
     */
    boolean checkBase64Code(String clientId, String code);

    /**
     * 手机号密码登录
     *
     * @param dto req
     * @return 用户token信息
     */
    TokenResponse phonePasswordLogin(PhonePasswordLoginDTO dto);

    /**
     * 手机短信验证码登录
     *
     * @param dto req
     * @return 用户token信息
     */
    TokenResponse phoneSmsCodeLogin(PhoneSmsCodeLoginDTO dto);

    /**
     * 获取客户端token信息
     *
     * @param clientId 客户端id
     * @return 用户token信息
     */
    TokenResponse getClientToken(String clientId);
}
